/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __Sensor_H__
#define __Sensor_H__

#ifdef __cplusplus
extern "C" {
#endif

/* USER CODE BEGIN Includes */
#include "main.h"
#include "gpio.h"
#include "usart.h"
#include "spi.h"
/* USER CODE END Includes */

/* USER CODE BEGIN Private defines */

/* CS1237寄存器和命令定义 */
#define CS1237_WRITE_CONFIG_CMD     0x65  /* 写配置寄存器命令 */
#define CS1237_READ_CONFIG_CMD      0x56  /* 读配置寄存器命令 */

/* 配置寄存器位定义 */
#define CS1237_REF_OFF              (1 << 6)  /* 参考电压输出关闭位 */
#define CS1237_SPEED_SEL_10HZ       0x00      /* 10Hz输出速率 */
#define CS1237_SPEED_SEL_40HZ       0x10      /* 40Hz输出速率 */
#define CS1237_SPEED_SEL_640HZ      0x20      /* 640Hz输出速率 */
#define CS1237_SPEED_SEL_1280HZ     0x30      /* 1280Hz输出速率 */
#define CS1237_PGA_SEL_1            0x00      /* PGA=1 */
#define CS1237_PGA_SEL_2            0x04      /* PGA=2 */
#define CS1237_PGA_SEL_64           0x08      /* PGA=64 */
#define CS1237_PGA_SEL_128          0x0C      /* PGA=128 */
#define CS1237_CH_SEL_CHANNELA      0x00      /* 通道A */
#define CS1237_CH_SEL_TEMPERATURE   0x04      /* 温度传感器 */
#define CS1237_CH_SEL_SHORTS        0x08      /* 内部短路 */

/* USER CODE END Private defines */

/* USER CODE BEGIN Prototypes */

/* 用于CS1237内部通信的延时函数 */
void cs1237_delay(void);

/* CS1237初始化函数 */
void CS1237_Init(void);

/* 从CS1237读取原始数据的函数(使用外部中断方式) */
int32_t CS1237_ReadData_EXTI(void);

/* 设置零点偏移量的函数 */
void CS1237_Set_Offset(float offset_value);

/* 设置重量转换比例系数的函数 
 * @param weight: 用于校准的重量值（单位：kg）
 */
float CS1237_Set_Scale(float weight_kg);

/* 读取重量值的函数（单位：kg） */
float CS1237_Read_Kg(void);

/* 读取重量值的函数（单位：N） */
float CS1237_Read_N(void);

/* USER CODE END Prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __Sensor_H__ */

